Recall that while the name of an array can be thought of as a pointer, it is also a constant and cannot have a new address assigned to it. Therefore the following is also disallowed:
char c_array[14];
c_array = "Hello, world!"; /* disallowed since c_array is a pointer constant */
C does not provide built-in operators for manipulating arrays. Fortunately, functions to perform string manipulation are included in the standard C function libraries, which - when linked together with the programmer's own code - serve to extend the C language. The strcpy() function takes two character array name (i.e. character pointer) arguments and copies the elements of the second array to those of the first. It does NOT simply copy the second pointer to the first. strcpy() requires that the second array contain a terminating null character '\0'. (Note that c_array allocates 14 elements to accomodate the extra character.)
char c_array[14];
strcpy(c_array,"Hello, world!"); /* must '#include <string.h>' at top of file */